<?php



abstract class base_abstract
{
    function __construct($controller)
    {
        if (isset($_POST["PHPSESSID"])) {
    		session_id($_POST["PHPSESSID"]);
    	}
        session_start();
        
        $this->view = Smarty3::instance();
        $this->cache = Cache::$instance;
        
        $this->view->assign('controller', $controller);
    }
    

    function redirect($url = '')
    {
        $site = SITE_URL;
        if (!$url) {
            $url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $site;
        }

        if (substr($url, 0, 4) != 'http') {
            if ($url{0} != '/') {
                $url = '/'.$url;
            }
            $url = $site.$url;
        }
        header('Location: ' . $url);
        exit;
    }

		function send_email($to, $subject, $content) {

        try {
 					$mail=new PHPMailer();
					// 设置PHPMailer使用SMTP服务器发送Email
					$mail->IsSMTP();
					// 设置邮件的字符编码，若不指定，则为'UTF-8'
					$mail->CharSet='UTF-8';
					// 添加收件人地址，可以多次使用来添加多个收件人
					$mail->AddAddress($to);

					// 设置邮件正文
					// $mail->Body=$message;
					$mail->MsgHTML($content);
					// 设置邮件头的From字段。
					// 对于网易的SMTP服务，这部分必须和你的实际账号相同，否则会验证出错。
					$mail->From='q_18611126804@163.com';
					// 设置发件人名字
					$mail->FromName='admin';
					// 设置邮件标题
					$mail->Subject=$subject;
					// 设置SMTP服务器。这里使用网易的SMTP服务器。
					$mail->Host='smtp.163.com';
					// 设置为“需要验证”
					$mail->SMTPAuth=true;
					// 设置用户名和密码，即网易邮件的用户名和密码。
					$mail->Username='q_18611126804';
					$mail->Password='quqiang8';
					// 发送邮件。
					$mail->Send();
				} catch (Exception $e) {

				}
        
    }
}



function get_info($table, $id, $key) {
    static $info = array();
    if (!isset($info[$id.'_'.$table])) {
        $info[$id.'_'.$table] = _model($table)->read(array('id'=>$id));
    }

    if (!isset($info[$id.'_'.$table][$key])) {
        return '';
    }

    return $info[$id.'_'.$table][$key];
}

function get_bg_color($comment_num = 0) {
    $colr = Config::get('color');
    foreach($colr as $key=>$val)
    {
        if($comment_num>=$key){
            return $val;
        }
    }
}

function filter_content($content)
{
    $data = _model('filt_key')->getList("WHERE type='0' ORDER BY id DESC");
    foreach ($data as  $value) {        
        if (strpos($content, $value['name']) !== false) {
            return true;
        }
    }
    return false;
}

function slider_value($str)
{
    $s = array('h'=>'小时内', 'd'=>'天内', 'w'=>'星期内', 'm'=>'月内');
    $slider = Config::get('slider');
    $k = $slider[$str];
    $i = explode('_', $k);
    return  $i[0].$s[$i[1]];

}

function get_slider_time($val)
{
    $slider = Config::get('slider');
    $val = $slider[$val];
    $a = array('h'=>60*60, 'd'=>60*60*24, 'w'=>60*60*24*7, 'm'=>60*60*24*31);
    $i = explode('_', $val);
    return time()-$i[0]*$a[$i[1]];
}


function trim_right($str)
{
    $len = strlen($str);
    /* 为空或单个字符直接返回 */
    if ($len == 0 || ord($str{$len - 1}) < 127) {
        return $str;
    }
    /* 有前导字符的直接把前导字符去掉 */
    if (ord($str{$len - 1}) >= 192) {
       return substr($str, 0, $len - 1);
    }
    /* 有非独立的字符，先把非独立字符去掉，再验证非独立的字符是不是一个完整的字，不是连原来前导字符也截取掉 */
    $r_len = strlen(rtrim($str, "\x80..\xBF"));
    if ($r_len == 0 || ord($str{$r_len - 1}) < 127) {
        return sub_str($str, 0, $r_len);
    }

    $as_num = ord( ~ $str{$r_len - 1});
    if ($as_num > (1 << (6 + $r_len - $len))) {
        return $str;
    } else {
        return substr($str, 0, $r_len - 1);
    }
}

function substr_fix($string, $len = 4) {
    $old = $string;
    $len *= 2;
    if (strlen($string) <= $len) {
        return $string;
    }
    $chinese = "(?:[".chr(228)."-".chr(233)."][".chr(128)."-".chr(191)."][".chr(128)."-".chr(191)."])";
    preg_match_all("/$chinese|\S|\s/", $string, $out);
    $string = '';
    foreach ($out[0] as $key => $val) {
        $len = strlen($val) == 1 ? $len - 1 : $len - 2;
        if ($len < 0) {
            break;
        }
        $string .= $val;
    }
    $string = trim_right($string);
    
    if ($string == $old) {
        return $string;
    }
    return $string.'...';
}


?>